Jcenter服务即将关闭,改用mavenCentral,Google已弃用并终止Jcenter!
作者:Bgwan,链接:https://zhuanlan.zhihu.com/p/363156372
写在前面
是这样的,昨晚livery1.2.1升级完成,使用的时候出现这样的错误
Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build to other Maven repositories.
This repository is deprecated and it will be shut down in the future.
See http://developer.android.com/r/tools/jcenter-end-of-service for more information.
Currently detected usages in: Gradle Settings
Remove JCenter from repositories
很久没有登录jfrog bintra
y,上了一下,【链接1】
在bintray官网看到jfrog的公告:
发现jcenter服务即将停止,需要迁移项目库(比如mavenCentral
),这意味着几乎所有使用了jcenter的项目将要面临失败构建(包含Android开发中build.gradle
和其它开源的二进制依赖)
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
}
说明:
JFrog是一家公司(这家公司维护着很多 Android,Java项目使用的 JCenter 工件库) jcenter是一个免费托管java,kotlin库的仓库
其实看到的信息jfrog在2021年2月28日
不再接受GoCenter
和ChartCenter
的提交 GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效),可是昨晚2021年4月7日
在Jcenter中还是可以发布成功,但是却引用不了最新,那我推测jcenter中依然可以提交成功,只是提交以后去下载的时候,这里打开【链接2Livery1.2.1】是404.That’s an error
,自然就构建失败了
还原回livery1.2.0版本没有影响(1.2.0发布的时间是年前),可以构建成功,说明当前时间点,以前的版本还是可以用的
然后我又看了【链接3】Android开发者Google官方消息
https://developer.android.com/studio/build/jcenter-migration
Google在3月1日已经警告开发者移除Jcenter()
,并且针对Google自己的开源库,在Android Studio 4.2
Google已经把Maven Central 作为gradle的默认配置了(我还特意更新了一下,以前就是jcenter)
,kotlin的所有库也立马转移到maven central
jcenter() // Warning: this repository is going to shut down soon
反正结论就是:
jcenter跑路了,5月1日停止服务并逐步删除所有二进制
时间线与影响
【链接1:jfrog官网公告时间线】:
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/#
也就是说到2022年2月1日JCenter便不再可用了
2021年2月28日 不再接受GoCenter和ChartCenter的提交GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效)。
2021年3月31日 JCenter将不再接受更多的提交。
2021年4月12日,26日 我们将有一些短期服务暂停,以提醒用户的服务,将在5月1日。(具体时间将在Bin-y Status页面上公布。)
2021年5月1日 Bin-y服务将不再提供。GoCenter和ChartCenter服务将不再适用于非艺术性客户.(ConanCenter不受影响)。
2022年2月1日 JCenter将不再适用于非艺术性客户。GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效)。
项目构建可能会受到以下几种方式的关闭影响:
Gradle可能无法下载用于编译,测试或运行代码的依赖项。 Gradle可能无法下载插件用来配置构建的依赖项。 Gradle可能不再能够将您的软件包发布到Bintray。
解决方法
jcenter跑路了,Google也改用
mavenCentral
,意味着我又要花时间折腾了,吐一下:
感觉jfrog这做法挺坑爹,而且邮件都没有给我发,我看到其它同学的是有收到邮件的,难道还区别对待,导致近一个月的时间我都不知道这件事情,回过神来,才知道大清都亡了,jcenter竟然跑路了
下面的替代方法可以参考:
(1)jfrog官方提供的解决方案:
点进去,需要二选一(中国,美国),再点进去
看到这儿,“免费试用”
,怎么感觉不对,大家懂了吧,为啥jfrog突然跑路bintray,不再维护center library了,你说要钱,那下次我进到bintray官网,你让我扫个二维码付款我也是愿意的,但是你别这样搞,一套本来完整的东西,我还要再花时间去折腾,气人
(2)http://jitpack.io的替代方案
这个方案在livery1.0.0中我曾经使用过这个方案,但是在后期的Android Studo升级过程中,Google默认了jcenter仓库,所以后面所有的开源库我都采用了Bintrary,因为这样方便,但是现在由于Bintray不再维护,所以本人决定在2022年2月1之前,完成livery1.2.1以后版本的迁移工作,因为jfrog在2022年2月1日即停用jcenter
http://jitpack.io的替代方法可以参考我的这篇内容
android Studio如何发布AAR至Bintray或者jitpack?
https://zhuanlan.zhihu.com/p/22351830
(3)maven central的替代方案
maven官网:
https://link.zhihu.com/?target=https%3A//maven.apache.org/
https://search.maven.org
(4)自建Nexus或maven central
因为之前在华为方待的时候,内部是通过:自建的Nexus或maven central,我们引用的关系,大概差不多是这样子:可以参考【链接5-推荐】自建库的方法
allprojects {
repositories {
jcenter()
maven {
url "http://120.69.199.196:8080/nexus/content/repositories/releases/"
}
}
}
然后具体到库:
implementation 'com.cooloongwu.hello:hello.native:1.0.3'
(5)如果是Android项目可以直接下载AAR,或者jar
一般来说在jcenter中的库,(在截至2022年2月1日前)都是可以直接下载下来的,比如Livery1.2.1,你可以在bintray下载,也可以通过Livery帮助文档 下载通过libs库引用
以上就是解决方案和一些感想吧:一般个人或组织:推荐jitpack;如果是大一点的公司就可以自建Nexus或maven central,jfrog的方法由于变了味道,我找他们的客服问了一下,就只回了我一句,公司是要逐渐停止维护bintray了
---END---
更文不易,点个“在看”支持一下👇